home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-03 / qbasicpg.zip / UTILDEMO.BAS < prev    next >
BASIC Source File  |  1988-12-21  |  27KB  |  589 lines

  1. '   Program: QUTILDEM.BAS   -   QuickBASIC Utility Set Demonstration
  2. '
  3. '   By: Traveller Software - Copyright 1988
  4. '
  5. '   Release: 4 - 12 December 1988
  6. ' --------------------------------------------------------------------------
  7. '
  8. DECLARE SUB Cprint (Row%, Col%, Fore%, Back%, Prompt$)
  9. DECLARE SUB DriveType (Drive$, DrvType$, DrvType%)
  10. DECLARE SUB GetDirectory (Drive$)
  11. DECLARE SUB GetDirData (Path$, DirEntry$(), Attribute$, EntryCount%)
  12. DECLARE SUB GetDosVer (DosVer$)
  13. DECLARE SUB GetDrive (Drive$)
  14. DECLARE SUB GetDriveAllocation (Drive$, Clustors%, Sectors%, Bytes%, Available%)
  15. DECLARE SUB GetDriveFree (Drive$, Total&, Free&, Used&)
  16. DECLARE SUB GetEquipment (PrinterPorts%, CommPorts%, GameAdapter%, CoProcessor%, Drives%)
  17. DECLARE SUB GetMemorySize (Memory%)
  18. DECLARE SUB GetPrinterPort (PrinterPort%, Status%)
  19. DECLARE SUB InkeyBox (Row%, Col%, Fore%, Back%, Prompt$, Reply$)
  20. DECLARE SUB MakeBox (Row1%, Col1%, Row2%, Col2%, BoxType%, Fore%, Back%, Title$)
  21. DECLARE SUB MakeLine (Row1%, Col1%, Row2%, Col2%, LType%, Fore%, Back%)
  22. DECLARE SUB MakeMenu (Row1%, Col1%, MType%, IType%, TFore%, Fore%, Back%, Menu%, Menu$(), VReply$, Reply%)
  23. DECLARE SUB Make123 (Row1%, Col1%, MType%, TFore%, Fore%, Back%, Menu$, Title$, Reply%)
  24. DECLARE SUB Motion (Row%, CCol%, Fore%, Back%, X$)
  25. DECLARE SUB Oops ()
  26. DECLARE SUB RestScreen (ScrnSave%())
  27. DECLARE SUB SaveScreen (ScrnSave%())
  28. DECLARE SUB ScrlList (Row%, Col%, TFore%, Fore%, Back%, Btype%, ListLen%, ShowLen%, ShowWid%, Items$(), Prompt$, Reply%, Mark$)
  29. DECLARE SUB ShowDir (Row%, Col%, TFore%, Fore%, Back%, BoxType%, ShowType%, ShowLen%, DirEntry$(), Reply%, Mark$)
  30. DECLARE SUB TypeLine (Row%, Col%, InLn%, Fore%, Back%, Prompt$, Reply$)
  31. DECLARE SUB PrinterStatus (PrinterPort%, Status%)
  32. DECLARE SUB Delay (Seconds%)
  33. DECLARE SUB ViewFile (Name$, MaxLength%, Row%, Col%, TFore%, Fore%, Back%, Btype%, LineCount%, ShowLen%, ShowWid%, Prompt$, AScroll%)
  34. DECLARE SUB GetVerify (Flag%)
  35. DECLARE SUB ValidDrives (Drives$)
  36. DECLARE SUB GetVideo (VideoMode%, CharCol%, VideoPage%)
  37. DECLARE SUB MakeBitNum (BitString$, Number%)
  38. DECLARE SUB MakeBitStr (Number%, BitString$)
  39. DECLARE SUB CheckBitNum (Number%, BitCheck%, Status%)
  40. DECLARE SUB CheckBitStr (BitString$, BitCheck%, Status%)
  41. DECLARE SUB GetHighLow (Number%, High%, Low%)
  42. DECLARE SUB SetHighLow (High%, Low%, Number%)
  43. '
  44. ' --------------------------------------------------------------------------
  45. '
  46.     DEFINT A-Z
  47.     DIM ScrnSave(3440)      '   For SaveScreen & RestScreen
  48.     DIM DirEntry$(255, 4)   '   For GetDirData
  49.     DIM Menu$(10)           '   For MakeMenu
  50.     DIM Answer$(1), BAnswer$(1)
  51.     Answer$(0) = "No": Answer$(1) = "Yes"
  52.     BAnswer$(0) = "Off": BAnswer$(1) = "On"
  53.     Release$ = "The QuickBASIC Utility Set - Release #4, 12 December 1988"
  54. ' --------------------------------------------------------------------------
  55. '   Lets Get Started!
  56. ' --------------------------------------------------------------------------
  57.     COLOR 15, 3: CLS
  58.     CALL MakeBox(4, 10, 14, 70, 7, 7, 1, "")
  59.     LOCATE 5, 12: COLOR 15, 1: PRINT "     /|"; : COLOR 14: PRINT "  ----- "; : COLOR 15: PRINT "Traveller"
  60.     LOCATE 6, 12: COLOR 15: PRINT "   /  |"; : COLOR 4: PRINT "\"; : COLOR 14: PRINT "   ------"
  61.     LOCATE 7, 12: COLOR 15: PRINT " <  T |"; : COLOR 4: PRINT "  >"; : COLOR 14: PRINT "   -------"
  62.     LOCATE 8, 12: COLOR 15: PRINT "   \  |"; : COLOR 4: PRINT "/ "; : COLOR 14: PRINT "  ------  "
  63.     LOCATE 9, 12: COLOR 15: PRINT "     \|"; : COLOR 14: PRINT "  ----- "; : COLOR 15: PRINT "Software"
  64.     CALL Cprint(7, 40, 14, 1, "P R E S E N T S:")
  65.     CALL MakeLine(10, 10, 10, 70, 3, 7, 1)
  66.     CALL Cprint(11, 0, 14, 1, Release$)
  67.     CALL Cprint(12, 0, 15, 1, "By: Traveller Software and Associates")
  68.     CALL Cprint(13, 0, 15, 1, "Copyright (c) 1987 - 1988")
  69.     CALL Delay(6)
  70. ' --------------------------------------------------------------------------
  71. '   Tell them what this is all about.
  72. ' --------------------------------------------------------------------------
  73.     COLOR 15, 3: CLS
  74.     CALL MakeBox(3, 10, 5, 70, 7, 7, 5, "")
  75.     CALL Cprint(4, 0, 15, 5, Release$)
  76.     CALL MakeBox(19, 10, 22, 70, 7, 7, 4, "[ Information ]")
  77.     CALL Cprint(20, 12, 15, 4, "Use the Up/Down, Page-Up/Down, Home/End Cursor keys to")
  78.     CALL Cprint(21, 12, 15, 4, "Scroll through the text. Press the ESCAPE key to continue.")
  79.    
  80.     FileName$ = "INTRO40.DOC"
  81.     CALL ViewFile(FileName$, 20, 8, 10, 15, 14, 1, 5, ListLen%, 7, 57, "[ Introduction ]", 0)
  82.     IF ListLen% < 1 THEN GOTO FileError
  83. ' --------------------------------------------------------------------------
  84. '   Utility Set Areas of Investigation
  85. ' --------------------------------------------------------------------------
  86. MainMenu:
  87.     COLOR 15, 3: CLS
  88.     CALL MakeBox(3, 10, 5, 70, 7, 7, 5, "")
  89.     CALL Cprint(4, 0, 15, 5, Release$)
  90.    
  91.     CALL MakeBox(15, 10, 18, 70, 7, 7, 4, "[ Information ]")
  92.     CALL Cprint(16, 0, 15, 4, "Use the Left and Right Cursor Keys to select a topic.")
  93.     CALL Cprint(17, 0, 15, 4, "Press the ENTER key to continue.")
  94.    
  95.     Menu$ = "DOS BIOS VIDEO BITS OTHER END-Program"
  96.     CALL Make123(9, 13, 6, 15, 0, 2, Menu$, "[ Utility Set Areas of Investigation ]", SubMenu)
  97.     IF SubMenu = 6 THEN
  98.         COLOR 15, 3: CLS
  99.         CALL MakeBox(3, 10, 5, 70, 7, 7, 5, "")
  100.         CALL Cprint(4, 0, 15, 5, Release$)
  101.         CALL MakeBox(19, 10, 22, 70, 7, 7, 4, "[ Information ]")
  102.         CALL Cprint(20, 12, 15, 4, "Use the Up/Down, Page-Up/Down, Home/End Cursor keys to")
  103.         CALL Cprint(21, 12, 15, 4, "Scroll through the text. Press the ESCAPE key to continue.")
  104.   
  105.         FileName$ = "FINALCOM.DOC"
  106.         CALL ViewFile(FileName$, 40, 8, 10, 15, 14, 1, 5, ListLen%, 7, 57, "[ Final Comments ]", 0)
  107.         IF ListLen% < 1 THEN GOTO FileError
  108.         COLOR 15, 0: CLS : END
  109.     END IF
  110.     IF SubMenu = 1 THEN GOTO DOSDemos
  111.     IF SubMenu = 2 THEN GOTO BIOSDemos
  112.     IF SubMenu = 3 THEN GOTO VideoDemos
  113.     IF SubMenu = 4 THEN GOTO BITSDemos
  114.     GOTO OTHERDemos
  115.  
  116. ' --------------------------------------------------------------------------
  117. '   Demonstration of some the BIOSUTIL Functions
  118. ' --------------------------------------------------------------------------
  119. BIOSDemos:
  120.     COLOR 15, 3: CLS
  121.     CALL MakeBox(3, 10, 5, 70, 7, 7, 5, "")
  122.     CALL Cprint(4, 0, 15, 5, Release$)
  123.     CALL MakeBox(19, 10, 22, 70, 7, 7, 4, "[ Information ]")
  124.     CALL Cprint(20, 12, 15, 4, "Use the Up/Down, Page-Up/Down, Home/End Cursor keys to")
  125.     CALL Cprint(21, 12, 15, 4, "Scroll through the text. Press the ESCAPE key to continue.")
  126.  
  127.     FileName$ = "BIOSINFO.DOC"
  128.     CALL ViewFile(FileName$, 40, 8, 10, 15, 14, 1, 5, ListLen%, 7, 57, "[ BIOS Comments ]", 0)
  129.     IF ListLen% < 1 THEN GOTO FileError
  130.    
  131.     COLOR 15, 3: CLS
  132.     CALL MakeBox(2, 5, 16, 75, 2, 7, 0, "[ BIOS Demonstration ]")
  133.     CALL Cprint(3, 0, 14, 0, "These utilities can check out your system setup.")
  134.     CALL MakeLine(4, 5, 4, 75, 2, 7, 0)
  135.     CALL MakeLine(6, 5, 6, 75, 4, 7, 0)
  136.  
  137.     CALL GetMemorySize(Memory)
  138.     CALL GetEquipment(Printers, Comm, Game, CoProc, Drives)
  139.  
  140.     CALL GetPrinterPort(1, Port1): CALL PrinterStatus(1, Port1Stat)
  141.     CALL GetPrinterPort(2, Port2): CALL PrinterStatus(2, Port2Stat)
  142.     CALL GetPrinterPort(3, Port3): CALL PrinterStatus(3, Port3Stat)
  143.  
  144. '
  145. '   Print the Information
  146. '
  147.     COLOR 15, 0: LOCATE 5, 7: PRINT "On-Board System Memory (Standard): ";
  148.         COLOR 14, 0: PRINT USING "###k"; Memory
  149.  
  150.     COLOR 15, 0: LOCATE 7, 7: PRINT "Floppy Disk Drives Installed: ";
  151.         COLOR 14, 0: PRINT Drives
  152.     COLOR 15, 0: LOCATE 8, 7: PRINT "Serial Ports Installed:       ";
  153.         COLOR 14, 0: PRINT Comm
  154.     COLOR 15, 0: LOCATE 9, 7: PRINT "Game Adapter Installed:        ";
  155.         COLOR 14, 0: PRINT Answer$(Game)
  156.     COLOR 15, 0: LOCATE 10, 7: PRINT "Math Co-Processor Installed:   ";
  157.         COLOR 14, 0: PRINT Answer$(CoProc)
  158.  
  159.     CALL MakeLine(11, 5, 11, 75, 4, 7, 0)
  160.     COLOR 15, 0: LOCATE 12, 7: PRINT "Printer Ports Installed: ";
  161.         COLOR 14, 0: PRINT Printers
  162.     COLOR 15, 0: LOCATE 13, 7: PRINT "Parallel Printer Port #1: ";
  163.     IF Port1 = 1 THEN
  164.             COLOR 14, 0: PRINT "Available - ";
  165.             IF Port1Stat = 0 THEN PRINT "On-Line" ELSE PRINT "Off-Line"
  166.         ELSE
  167.             COLOR 14, 0: PRINT "Not Available"
  168.     END IF
  169.     COLOR 15, 0: LOCATE 14, 7: PRINT "Parallel Printer Port #2: ";
  170.     IF Port2 = 1 THEN
  171.             COLOR 14, 0: PRINT "Available - ";
  172.             IF Port2Stat = 0 THEN PRINT "On-Line" ELSE PRINT "Off-Line"
  173.         ELSE
  174.             COLOR 14, 0: PRINT "Not Available"
  175.     END IF
  176.     COLOR 15, 0: LOCATE 15, 7: PRINT "Parallel Printer Port #3: ";
  177.     IF Port3 = 1 THEN
  178.             COLOR 14, 0: PRINT "Available - ";
  179.             IF Port3Stat = 0 THEN PRINT "On-Line" ELSE PRINT "Off-Line"
  180.         ELSE
  181.             COLOR 14, 0: PRINT "Not Available"
  182.     END IF
  183.     CALL Motion(24, 0, 14, 3, "Press any key to continue.. ")
  184.     GOTO MainMenu:
  185.  
  186. ' --------------------------------------------------------------------------
  187. '   Demonstration of the Directory Utilities
  188. ' --------------------------------------------------------------------------
  189. DOSDemos:
  190.     COLOR 15, 3: CLS
  191.     CALL MakeBox(3, 10, 5, 70, 7, 7, 5, "")
  192.     CALL Cprint(4, 0, 15, 5, Release$)
  193.     CALL MakeBox(19, 10, 22, 70, 7, 7, 4, "[ Information ]")
  194.     CALL Cprint(20, 12, 15, 4, "Use the Up/Down, Page-Up/Down, Home/End Cursor keys to")
  195.     CALL Cprint(21, 12, 15, 4, "Scroll through the text. Press the ESCAPE key to continue.")
  196.  
  197.     FileName$ = "DOSINFO.DOC"
  198.     CALL ViewFile(FileName$, 40, 8, 10, 15, 14, 1, 5, ListLen%, 7, 57, "[ DOS Comments ]", 0)
  199.     IF ListLen% < 1 THEN GOTO FileError
  200.    
  201.     COLOR 15, 3: CLS
  202.     CALL MakeBox(2, 5, 19, 75, 2, 7, 0, "[ DOS Demonstration ]")
  203.     CALL Cprint(3, 0, 14, 0, "These utilities allow enhanced DOS interfacing.")
  204.     CALL MakeLine(4, 5, 4, 75, 2, 7, 0)
  205.     CALL MakeLine(6, 5, 6, 75, 4, 7, 0)
  206.     CALL MakeLine(15, 5, 15, 75, 4, 7, 0)
  207.    
  208.     CALL GetDosVer(DosVer$)
  209.     CALL GetDirectory(Path$)
  210.     CALL DriveType(Drive$, DrvType$, DrvType)
  211.     CALL GetDriveAllocation(Drive$, Clusters, Sectors, Bytes, Available)
  212.     CALL GetDriveFree(Drive$, Total&, Free&, Used&)
  213.     CALL GetVerify(Verify)
  214.     CALL ValidDrives(VDrives$)
  215.  
  216.     TotalK& = Total& \ 1024: UsedK& = Used& \ 1024: FreeK& = Free& \ 1024
  217.     TotalM& = TotalK& \ 1000: UsedM& = UsedK& \ 1000: FreeM& = FreeK& \ 1000
  218.  
  219.     COLOR 15, 0: LOCATE 5, 7: PRINT "Current Default Drive\Directory: ";
  220.         COLOR 14, 0: PRINT Path$
  221.  
  222.     COLOR 15, 0: LOCATE 7, 7: PRINT "Default Disk Drive Type: ";
  223.         COLOR 14, 0: PRINT DrvType$
  224.  
  225.     COLOR 15, 0: LOCATE 8, 7: PRINT "Total Clusters:";
  226.         COLOR 14, 0: PRINT USING "         ##,###"; Clusters
  227.     COLOR 15, 0: LOCATE 9, 7: PRINT "Available Clusters:";
  228.         COLOR 14, 0: PRINT USING "     ##,###"; Available
  229.     COLOR 15, 0: LOCATE 10, 7: PRINT "Sectors per Cluster:";
  230.         COLOR 14, 0: PRINT USING "    ##,###"; Sectors
  231.     COLOR 15, 0: LOCATE 11, 7: PRINT "Bytes per Sector:";
  232.         COLOR 14, 0: PRINT USING "       ##,###"; Bytes
  233.     COLOR 15, 0: LOCATE 12, 7: PRINT "Total Disk Storage:";
  234.         COLOR 14, 0: PRINT USING "     ##,###,### bytes / ##,###k / ## Meg"; Total&; TotalK&; TotalM&
  235.     COLOR 15, 0: LOCATE 13, 7: PRINT "Used Storage Space:";
  236.         COLOR 14, 0: PRINT USING "     ##,###,### bytes / ##,###k / ## Meg"; Used&; UsedK&; UsedM&
  237.     COLOR 15, 0: LOCATE 14, 7: PRINT "Free Storage Space:";
  238.         COLOR 14, 0: PRINT USING "     ##,###,### bytes / ##,###k / ## Meg"; Free&; FreeK&; FreeM&
  239.          
  240.     COLOR 15, 0: LOCATE 16, 7: PRINT "Disk Operating System (DOS) Version: ";
  241.         COLOR 14, 0: PRINT DosVer$
  242.    
  243.     COLOR 15, 0: LOCATE 17, 7: PRINT "Verify-After-Write Status: ";
  244.         COLOR 14, 0: PRINT Answer$(Verify)
  245.  
  246.     COLOR 15, 0: LOCATE 18, 7: PRINT "Valid System Disk Dives: ";
  247.         COLOR 14, 0: PRINT VDrives$
  248.  
  249.  
  250.     CALL Motion(25, 0, 14, 3, "Press any key to continue.. ")
  251. '
  252. '   Directory Demo
  253. '
  254.     COLOR 15, 3: CLS
  255.     CALL MakeBox(10, 20, 12, 60, 7, 7, 4, "")
  256.     CALL Cprint(11, 0, 15, 4, "Loading Directory Please Wait..")
  257.     CALL GetDirData("", DirEntry$(), "AN", EntryCount)
  258. '
  259. '   If EntryCount = 0 then we can do the Directory Demo
  260. '
  261.     IF EntryCount = 0 THEN
  262.     COLOR 15, 3: CLS
  263.         CALL MakeBox(9, 15, 12, 65, 7, 7, 4, "[ Notice ]")
  264.         CALL Cprint(10, 0, 15, 4, "I was unable to locate any Directory Entries,")
  265.         CALL Cprint(11, 0, 15, 4, "therefore, we must skip the Directory Demo.")
  266.         CALL Delay(6): GOTO MainMenu
  267.     END IF
  268.    
  269.     COLOR 15, 3: CLS
  270.     CALL MakeBox(2, 10, 5, 70, 7, 7, 5, "[ DOS Demonstration ]")
  271.     CALL Cprint(3, 0, 15, 5, "We can also take a look at your drive's directory.")
  272.     CALL Cprint(4, 0, 15, 5, "This can be done several ways....")
  273.    
  274.     CALL MakeBox(16, 8, 19, 72, 2, 7, 4, "[ Information ]")
  275.     CALL Cprint(17, 0, 15, 4, "Use the Up/Down Arrow, Home, End, and Page Up/Down keys to")
  276.     CALL Cprint(18, 0, 15, 4, "scroll through the listing. Press ENTER to select an entry.")
  277.     CALL MakeBox(21, 9, 23, 71, 7, 0, 1, "")
  278.    
  279.     CALL SaveScreen(ScrnSave())
  280.     CALL Cprint(22, 0, 15, 1, "One way will display the FileNames only.")
  281.     CALL ShowDir(8, 30, 15, 0, 2, 2, 0, 5, DirEntry$(), Reply%, "N")
  282.  
  283.     CALL RestScreen(ScrnSave())
  284.     CALL Cprint(22, 0, 15, 1, "Another will display FileNames and Sizes.")
  285.     CALL ShowDir(8, 25, 15, 0, 2, 2, 1, 5, DirEntry$(), Reply%, "N")
  286.    
  287.     CALL RestScreen(ScrnSave())
  288.     CALL Cprint(22, 0, 15, 1, "Yet another will display FileNames, Sizes, Dates, & Times.")
  289.     CALL ShowDir(8, 15, 15, 0, 2, 2, 2, 5, DirEntry$(), Reply%, "N")
  290.  
  291.     CALL RestScreen(ScrnSave())
  292.     CALL Cprint(22, 0, 15, 1, "Last but not least, we can add the File Attributes.")
  293.     CALL ShowDir(8, 12, 15, 0, 2, 2, 3, 5, DirEntry$(), Reply%, "N")
  294.     GOTO MainMenu
  295.  
  296. ' --------------------------------------------------------------------------
  297. '   Demonstrate Cprint
  298. ' --------------------------------------------------------------------------
  299.     COLOR 15, 3: CLS
  300.     CALL MakeBox(1, 4, 4, 76, 7, 0, 1, "")
  301.     CALL Cprint(2, 0, 15, 1, "Did you every want one command that would Locate, change the Color,")
  302.     CALL Cprint(3, 0, 15, 1, "Center if desired, and then Print the information for you?")
  303.   
  304.     CALL MakeBox(7, 8, 22, 72, 2, 15, 0, "")
  305.     Prompt$ = STRING$(40, 219)
  306.     CALL Cprint(8, 0, 2, 0, "GREEN       - " + Prompt$)
  307.     CALL Cprint(9, 0, 3, 0, "CYAN        - " + Prompt$)
  308.     CALL Cprint(10, 0, 4, 0, "RED         - " + Prompt$)
  309.     CALL Cprint(11, 0, 5, 0, "MAGENTA     - " + Prompt$)
  310.     CALL Cprint(12, 0, 6, 0, "BROWN       - " + Prompt$)
  311.     CALL Cprint(13, 0, 7, 0, "WHITE       - " + Prompt$)
  312.     CALL Cprint(14, 0, 8, 0, "GRAY        - " + Prompt$)
  313.     CALL Cprint(15, 0, 9, 0, "Lt. BLUE    - " + Prompt$)
  314.     CALL Cprint(16, 0, 10, 0, "Lt. GREEN   - " + Prompt$)
  315.     CALL Cprint(17, 0, 11, 0, "Lt. CYAN    - " + Prompt$)
  316.     CALL Cprint(18, 0, 12, 0, "Lt. RED     - " + Prompt$)
  317.     CALL Cprint(19, 0, 13, 0, "Lt. MAGENTA - " + Prompt$)
  318.     CALL Cprint(20, 0, 14, 0, "YELLOW      - " + Prompt$)
  319.     CALL Cprint(21, 0, 15, 0, "Ints. WHITE - " + Prompt$)
  320.     CALL Cprint(23, 0, 15, 3, "We call it Cprint - for Color Print, and it does it all.")
  321.     CALL Motion(25, 0, 14, 3, "Press any Key to Continue....  ")
  322.  
  323. '
  324. '   Video Demos
  325. '
  326. VideoDemos:
  327.     COLOR 15, 3: CLS
  328.     CALL MakeBox(3, 10, 5, 70, 7, 7, 5, "")
  329.     CALL Cprint(4, 0, 15, 5, Release$)
  330.     CALL MakeBox(19, 10, 22, 70, 7, 7, 4, "[ Information ]")
  331.     CALL Cprint(20, 12, 15, 4, "Use the Up/Down, Page-Up/Down, Home/End Cursor keys to")
  332.     CALL Cprint(21, 12, 15, 4, "Scroll through the text. Press the ESCAPE key to continue.")
  333.  
  334.     FileName$ = "VIDINFO.DOC"
  335.     CALL ViewFile(FileName$, 40, 8, 10, 15, 14, 1, 5, ListLen%, 7, 57, "[ VIDEO Comments ]", 0)
  336.     IF ListLen% < 1 THEN GOTO FileError
  337.  
  338.     COLOR 15, 3: CLS
  339.     CALL MakeBox(2, 5, 24, 75, 2, 7, 0, "[ Video Demonstration ]")
  340.     CALL Cprint(3, 0, 14, 0, "These utilities can tell you about your video setup.")
  341.     CALL MakeLine(4, 5, 4, 75, 2, 7, 0)
  342.     CALL MakeLine(6, 5, 6, 75, 4, 7, 0)
  343.    
  344.     CALL GetVideo(VideoMode, CharCol, VideoPage)
  345.   
  346.  
  347.     CALL Cprint(5, 7, 15, 0, "Current Video Page: ")
  348.         COLOR 14, 0: PRINT VideoPage
  349.    
  350.     IF VideoMode = 0 THEN Fcolor = 14 ELSE Fcolor = 15
  351.     CALL Cprint(7, 7, Fcolor, 0, "40x25 Composite Video")
  352.     IF VideoMode = 1 THEN Fcolor = 14 ELSE Fcolor = 15
  353.     CALL Cprint(8, 7, Fcolor, 0, "40x25      16 Color Text")
  354.     IF VideoMode = 2 THEN Fcolor = 14 ELSE Fcolor = 15
  355.     CALL Cprint(9, 7, Fcolor, 0, "80x25 Composite Video")
  356.     IF VideoMode = 3 THEN Fcolor = 14 ELSE Fcolor = 15
  357.     CALL Cprint(10, 7, Fcolor, 0, "80x25      16 Color Text")
  358.     IF VideoMode = 4 THEN Fcolor = 14 ELSE Fcolor = 15
  359.     CALL Cprint(11, 7, Fcolor, 0, "40x25       4 Color    320x200 Graphics")
  360.     IF VideoMode = 5 THEN Fcolor = 14 ELSE Fcolor = 15
  361.     CALL Cprint(12, 7, Fcolor, 0, "40x25 Composite Video  320x200 Graphics")
  362.     IF VideoMode = 6 THEN Fcolor = 14 ELSE Fcolor = 15
  363.     CALL Cprint(13, 7, Fcolor, 0, "80x25       2 Color    640x200 Grphics")
  364.     IF VideoMode = 7 THEN Fcolor = 14 ELSE Fcolor = 15
  365.     CALL Cprint(14, 7, Fcolor, 0, "80x25       2 Color Monchorme Text")
  366.     IF VideoMode = 13 THEN Fcolor = 14 ELSE Fcolor = 15
  367.     CALL Cprint(15, 7, Fcolor, 0, "40x25      16 Color    320x200 Graphics")
  368.     IF VideoMode = 14 THEN Fcolor = 14 ELSE Fcolor = 15
  369.     CALL Cprint(16, 7, Fcolor, 0, "80x25      16 Color    640x200 Graphics")
  370.     IF VideoMode = 15 THEN Fcolor = 14 ELSE Fcolor = 15
  371.     CALL Cprint(17, 7, Fcolor, 0, "80x25/43    2 Color    640x350 Graphics (Monochrome)")
  372.     IF VideoMode = 16 THEN Fcolor = 14 ELSE Fcolor = 15
  373.     CALL Cprint(18, 7, Fcolor, 0, "80x25/43 4/16 Color    640x350 Graphics")
  374.     IF VideoMode = 17 THEN Fcolor = 14 ELSE Fcolor = 15
  375.     CALL Cprint(19, 7, Fcolor, 0, "80x30/60    2 Color    640x480 Graphics")
  376.     IF VideoMode = 18 THEN Fcolor = 14 ELSE Fcolor = 15
  377.     CALL Cprint(20, 7, Fcolor, 0, "80x30/60   16 Color    640x480 Graphics")
  378.     IF VideoMode = 19 THEN Fcolor = 14 ELSE Fcolor = 15
  379.     CALL Cprint(21, 7, Fcolor, 0, "40x25     256 Color    320x200 Graphics")
  380.  
  381.     CALL MakeLine(22, 5, 22, 75, 4, 7, 0)
  382.    
  383.     CALL Cprint(23, 7, 15, 0, "Current Character Columns: ")
  384.         COLOR 14, 0: PRINT CharCol
  385.  
  386.    
  387.     CALL Motion(25, 0, 14, 3, "Press any key to continue.. ")
  388. '
  389. '   Menu Demonstration - Pull Down
  390. '
  391.     COLOR 15, 3: CLS
  392.     CALL MakeBox(2, 6, 4, 74, 7, 7, 5, "[ Video Demonstration ]")
  393.     CALL Cprint(3, 0, 15, 5, "If you like pull-down menu selection style, give this a try.")
  394.         CALL MakeBox(19, 10, 22, 70, 7, 7, 4, "[ Information ]")
  395.         CALL Cprint(20, 0, 15, 4, "Use the Up and Down Cursor Keys to select a topic.")
  396.         CALL Cprint(21, 0, 15, 4, "Press the ENTER key to continue.")
  397.     Menu$(0) = "Pull-Down Menu Demo"
  398.     Menu$(1) = "Selection Item One"
  399.     Menu$(2) = "Selection Item Two"
  400.     Menu$(3) = "Selection Item Three"
  401.     Menu$(4) = "Selection Item Four"
  402.     Menu$(5) = "Selection Item Five"
  403.     CALL MakeMenu(7, 27, 6, 2, 15, 0, 2, 5, Menu$(), "", Reply)
  404. '
  405. '   Key Selection Style
  406. '
  407.     COLOR 15, 3: CLS
  408.     CALL MakeBox(2, 6, 4, 74, 7, 7, 5, "[ Video Demonstration ]")
  409.     CALL Cprint(3, 0, 15, 5, "Or, you could always use a key selection style menu.")
  410.     CALL MakeBox(20, 10, 22, 70, 7, 7, 4, "[ Information ]")
  411.     CALL Cprint(21, 0, 15, 4, "Press a selection key to select a topic.")
  412.     Menu$(0) = "Key Selection Menu Demo"
  413.     Menu$(1) = "A - Key Selection Item One"
  414.     Menu$(2) = "B - Key Selection Item Two"
  415.     Menu$(3) = "C - Key Selection Item Three"
  416.     Menu$(4) = "D - Key Selection Item Four"
  417.     Menu$(5) = "E - Key Selection Item Five"
  418.     Menu$(6) = "Select Items A - E"
  419.     CALL MakeMenu(7, 23, 6, 1, 15, 0, 2, 6, Menu$(), "ABCDE", Reply)
  420.  
  421.     GOTO MainMenu
  422. '
  423. '   BITS Demos
  424. '
  425. BITSDemos:
  426.     COLOR 15, 3: CLS
  427.     CALL MakeBox(3, 10, 5, 70, 7, 7, 5, "")
  428.     CALL Cprint(4, 0, 15, 5, Release$)
  429.     CALL MakeBox(19, 10, 22, 70, 7, 7, 4, "[ Information ]")
  430.     CALL Cprint(20, 12, 15, 4, "Use the Up/Down, Page-Up/Down, Home/End Cursor keys to")
  431.     CALL Cprint(21, 12, 15, 4, "Scroll through the text. Press the ESCAPE key to continue.")
  432.  
  433.     FileName$ = "BITSINFO.DOC"
  434.     CALL ViewFile(FileName$, 40, 8, 10, 15, 14, 1, 5, ListLen%, 7, 57, "[ BITS Comments ]", 0)
  435.     IF ListLen% < 1 THEN GOTO FileError
  436.    
  437.     COLOR 15, 3: CLS
  438.     CALL MakeBox(2, 5, 23, 75, 2, 7, 0, "[ BITS Demonstration ]")
  439.     CALL Cprint(3, 0, 14, 0, "These utilities can be used for several bit operations.")
  440.     CALL MakeLine(4, 5, 4, 75, 2, 7, 0)
  441.     CALL MakeLine(4, 39, 23, 39, 7, 7, 0)
  442.  
  443.     BitNumber$ = "0000110011010000"
  444.     CALL MakeBitNum(BirNumber$, Number)
  445.  
  446.     Number1 = 32738
  447.     CALL MakeBitStr(Number1, BitString$)
  448.  
  449.  
  450.     Number1 = 32738
  451.     CALL MakeBitStr(Number1, BitString$)
  452.     CALL Cprint(5, 7, 15, 0, "MakeBitStr from: ")
  453.         COLOR 14: PRINT Number1
  454.     CALL Cprint(6, 7, 15, 0, "Returns: ")
  455.         COLOR 14: PRINT BitString$
  456.  
  457.     FOR X = 0 TO 15
  458.         CALL CheckBitNum(Number1, X, Bit)
  459.         IF Bit = 1 THEN Fcolor = 14 ELSE Fcolor = 15
  460.         CALL Cprint(7 + X, 7, Fcolor, 0, "Number Bit" + STR$(X) + " is " + BAnswer$(Bit) + ".")
  461.     NEXT X
  462.  
  463.     BitNumber$ = "0000110011010000"
  464.     CALL MakeBitNum(BitNumber$, Number)
  465.     CALL Cprint(5, 41, 15, 0, "MakeBitNum from: ")
  466.         COLOR 14: PRINT BitNumber$
  467.     CALL Cprint(6, 41, 15, 0, "Returns: ")
  468.         COLOR 14: PRINT Number
  469.  
  470.     FOR X = 0 TO 15
  471.         CALL CheckBitStr(BitNumber$, X, Bit)
  472.         IF Bit = 1 THEN Fcolor = 14 ELSE Fcolor = 15
  473.         CALL Cprint(7 + X, 41, Fcolor, 0, "String Bit" + STR$(X) + " is " + BAnswer$(Bit) + ".")
  474.     NEXT X
  475.  
  476.     CALL Motion(25, 0, 14, 3, "Press any key to continue.. ")
  477.    
  478.     COLOR 15, 3: CLS
  479.     CALL MakeBox(2, 5, 16, 75, 2, 7, 0, "[ BITS Demonstration ]")
  480.     CALL Cprint(3, 0, 14, 0, "Or they can perform 16/8 bit word operations.")
  481.     CALL MakeLine(4, 5, 4, 75, 2, 7, 0)
  482.     CALL MakeLine(4, 50, 16, 50, 7, 7, 0)
  483.  
  484.     High = 44: Low = 245
  485.     CALL SetHighLow(High, Low, HL1)
  486.  
  487.     SRow = 5
  488.     CALL Cprint(SRow, 7, 15, 0, "8 Bit High Number: ")
  489.         COLOR 14: PRINT High
  490.         CALL MakeBitStr(High, BitString$)
  491.         CALL Cprint(SRow, 55, 14, 0, RIGHT$(BitString$, 8))
  492.     CALL Cprint(SRow + 1, 7, 15, 0, "8 Bit Low Number:  ")
  493.         COLOR 14: PRINT Low
  494.         CALL MakeBitStr(Low, BitString$)
  495.         CALL Cprint(SRow + 1, 55 + 8, 14, 0, RIGHT$(BitString$, 8))
  496.     CALL Cprint(SRow + 3, 7, 15, 0, "16 Bit Number from SetHighLow: ")
  497.         COLOR 14: PRINT HL1
  498.         CALL MakeBitStr(HL1, BitString$)
  499.         CALL Cprint(SRow + 3, 55, 14, 0, BitString$)
  500.    
  501.     HL2 = 29738
  502.     CALL GetHighLow(HL2, High, Low)
  503.    
  504.     SRow = 12
  505.     CALL Cprint(SRow, 7, 15, 0, "16 Bit Number:     ")
  506.         COLOR 14: PRINT HL2
  507.         CALL MakeBitStr(HL2, BitString$)
  508.         CALL Cprint(SRow, 55, 14, 0, BitString$)
  509.     CALL Cprint(SRow + 2, 7, 15, 0, "8 Bit High Number from GetHighLow: ")
  510.         COLOR 14: PRINT High
  511.         CALL MakeBitStr(High, BitString$)
  512.         CALL Cprint(SRow + 2, 55, 14, 0, RIGHT$(BitString$, 8))
  513.     CALL Cprint(SRow + 3, 7, 15, 0, "8 Bit Low Number from GetHighLow:  ")
  514.         COLOR 14: PRINT Low
  515.         CALL MakeBitStr(Low, BitString$)
  516.         CALL Cprint(SRow + 3, 55 + 8, 14, 0, RIGHT$(BitString$, 8))
  517.  
  518.     CALL Motion(23, 0, 14, 3, "Press any key to continue.. ")
  519.     GOTO MainMenu
  520. '
  521. '   OTHER Demos
  522. '
  523. OTHERDemos:
  524.     COLOR 15, 3: CLS
  525.     CALL MakeBox(3, 10, 5, 70, 7, 7, 5, "")
  526.     CALL Cprint(4, 0, 15, 5, Release$)
  527.     CALL MakeBox(19, 10, 22, 70, 7, 7, 4, "[ Information ]")
  528.     CALL Cprint(20, 12, 15, 4, "Use the Up/Down, Page-Up/Down, Home/End Cursor keys to")
  529.     CALL Cprint(21, 12, 15, 4, "Scroll through the text. Press the ESCAPE key to continue.")
  530.  
  531.     FileName$ = "MISCINFO.DOC"
  532.     CALL ViewFile(FileName$, 40, 8, 10, 15, 14, 1, 5, ListLen%, 7, 57, "[ OTHER Comments ]", 0)
  533.     IF ListLen% < 1 THEN GOTO FileError
  534.  
  535. ' --------------------------------------------------------------------------
  536. '   Demonstrate TYPELINE
  537. ' --------------------------------------------------------------------------
  538.     COLOR 15, 3: CLS
  539.     CALL MakeBox(1, 8, 4, 72, 7, 7, 5, "[ Other Utilities Demonstation ]")
  540.     CALL Cprint(2, 0, 15, 5, "You can now have Word Processor stype input that allows for")
  541.     CALL Cprint(3, 0, 15, 5, "seperators such as (" + CHR$(34) + " or ,) without giving syntax errors.")
  542.   
  543.     CALL MakeBox(12, 10, 23, 71, 7, 7, 4, "[ Information ]")
  544.     CALL Cprint(13, 13, 15, 4, "HOME - Move cursor to start of Input Line.")
  545.     CALL Cprint(14, 13, 15, 4, "END  - Move cursor to end of Input Line.")
  546.     CALL Cprint(15, 13, 15, 4, "CURSOR " + CHR$(17) + "/" + CHR$(16) + " - Move cursor Right/Left on line.")
  547.     CALL Cprint(16, 13, 15, 4, "INSERT - Toggle Insert/Over-type Modes.")
  548.     CALL Cprint(17, 13, 15, 4, "DELETE - Delete characters from line.")
  549.     CALL Cprint(18, 13, 15, 4, "ESCAPE - Clear the Input Line.")
  550.     CALL Cprint(19, 13, 15, 4, "CTRL+D - Delete rest of text, from cursor to end of text.")
  551.     CALL Cprint(20, 13, 15, 4, "CTRL+T - Delete word.")
  552.     CALL Cprint(21, 13, 15, 4, "CTRL+CURSOR " + CHR$(17) + "/" + CHR$(16) + " - Move Right/Left one word.")
  553.     CALL Cprint(22, 13, 15, 4, "ENTER - Accept Input Line.")
  554.  
  555.     CALL MakeBox(7, 5, 9, 75, 6, 0, 2, "")
  556.     CALL TypeLine(8, 0, 30, 15, 2, "TypeLine Test (30 chars max.)", A$)
  557.     CALL MakeBox(7, 5, 9, 75, 6, 0, 2, "")
  558.     CALL Cprint(8, 0, 15, 2, "You entered: " + A$)
  559.     CALL Motion(25, 0, 14, 3, "Press any Key to Continue....  ")
  560. '
  561. '   Demonstrate InkeyBox
  562. '
  563. InkeyBoxDemo:
  564.     COLOR 15, 3: CLS
  565.     CALL MakeBox(6, 10, 17, 70, 7, 7, 5, "[ Other Utilities Demonstration ]")
  566.     CALL Cprint(8, 0, 15, 5, "If you need a single key entry from a prompt,")
  567.     CALL Cprint(9, 0, 15, 5, "we have just the thing for you.")
  568.     CALL MakeBox(11, 20, 13, 60, 6, 0, 2, "")
  569. InkeyBoxLoop:
  570.     CALL InkeyBox(12, 0, 15, 2, "[C]ontinue or [R]edraw Screen", A$)
  571.     A$ = UCASE$(A$)
  572.     IF A$ = "R" THEN GOTO InkeyBoxDemo
  573.     IF A$ <> "C" THEN CALL Oops: GOTO InkeyBoxLoop
  574.     GOTO MainMenu
  575.  
  576.  
  577. '
  578. '   Handle errors for missing information files
  579. '
  580. FileError:      
  581.     CALL MakeBox(8, 14, 13, 65, 5, 14, 4, "[ File Error! ]")
  582.     CALL Cprint(9, 0, 15, 4, "The DEMO program is unable to find the")
  583.     CALL Cprint(10, 0, 15, 4, FileName$ + " file. This file should be located")
  584.     CALL Cprint(11, 0, 15, 4, "within the default directory for this program to")
  585.     CALL Cprint(12, 0, 15, 4, "function properely.")
  586.     END
  587.  
  588.  
  589.